Unix OS ターミナルからCtrl + Cを送ると子プロセスもまとめて死ぬ動作の理由
参考:
Ctrl + CはSIGINTシグナルを送っているのだが、少しだけ動作が違う。
プロセスグループに入ってる全てのプロセスにSIGINTシグナルを送ってる。
動作確認
シンプルな子プロセス生成
code: rust
use std::process::Command;
fn main() -> Result<(), Box<dyn std::error::Error>> {
Command::new("sleep")
.arg("200")
.spawn()?;
loop {
std::thread::sleep(std::time::Duration::from_secs(1));
}
}
cargo runを実行する。
table: 動作確認
sleepプロセスの結果
Ctrl + Cを押す 消える
kill -15 消えない
kill -2 消えない
kill -9 消えない